import numpy as np
import cv2 as cv
# 鼠标回调函数
# 左键双击生成圆形
def draw_circle(event,x,y,flags,param):
    if event == cv.EVENT_LBUTTONDBLCLK:
        cv.circle(img,(x,y),100,(255,255,255),-1)
# 右键双击生成矩形，如果矩形在图像外，则无法生成
# 因为矩形的宽度和高度不能超过图像的宽度和高度
# 所以需要对鼠标坐标进行限制
# 具体实现请参考draw_rectangle函数
# 右键双击生成矩形
# 左键双击生成圆形
# 右键单击绘制直线
# 左键单击绘制点

def draw_rectangle(event,x,y,flags,param):
    if event == cv.EVENT_RBUTTONDBLCLK:
        cv.rectangle(img,(x,y),(x+50,y+50),(0,255,0),-1)

# 创建一个黑色图像，一个窗口，然后和回调绑定
img = np.zeros((1080,1920,3), np.uint8)
cv.namedWindow('image')
cv.setMouseCallback('image',draw_circle)
while(1):
    cv.imshow('image',img)
    if cv.waitKey(20) & 0xFF == 27:
        break
cv.destroyAllWindows()
